package com.gpstracking.Servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.gpstracking.BE.Dispositivo;
import com.gpstracking.BE.DispositivoPosicion;
import com.gpstracking.BE.TipoDispositivo;
import com.gpstracking.BE.Usuario;
import com.gpstracking.BL.AreaBL;
import com.gpstracking.BL.DispositivoBL;
import com.gpstracking.DA.TipoDispositivoDA;
import com.gpstracking.GData.GArea;
import com.gpstracking.Utils.Geometry.Point;

public class ServletDispositivo extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public ServletDispositivo() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html");
		//falta agregar esto.. deberia tener en texto toda la informacion que quiero q tenga del dispositivo (como cual fue la ultima notificacion que lanzo.. etc).. puede incluir links a imagenes
		PrintWriter out = response.getWriter();
		out.println("Esta es la informacion del dispositivo que quiero que se muestre =D");
		out.flush();
		//tmb podria utilizar json.. pero dsps
		out.close();
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html");
		String idDispositivo = request.getParameter("idDispositivo");
		String accion = request.getParameter("accion");
		
		System.out.println( "tesis" );
		
		HttpSession session = request.getSession(true);
		Usuario usuario = (Usuario)session.getAttribute("user");

		DispositivoBL controller = new DispositivoBL();

		//PrintWriter out = response.getWriter();
		
		
		if ( accion.equals("eliminar") ){
			System.out.println( usuario.getIdUsuario() );
			System.out.println( ""+idDispositivo);
			controller.eliminar(Integer.parseInt(idDispositivo));

		}else if (accion.equals("aceptar")){
			controller.aceptar(Integer.parseInt(idDispositivo));
		}else if (accion.equals("rechazar")) {
			controller.rechazar(Integer.parseInt(idDispositivo));
			
			/*if ( res ){
				out.print("M1");
			}else{
				out.print("M0");
			}*/
		}else if (accion.equals("peticion")){
			controller.aceptar(Integer.parseInt(idDispositivo),usuario);
		}else {
			Dispositivo dispositivo = new Dispositivo();
			String macAddress = request.getParameter("macAddress");
			String numero = request.getParameter("numero");
			String descripcion = request.getParameter("descripcion");
			dispositivo.setEstado("pendiente");
			dispositivo.setUsuario(usuario);
			dispositivo.setMacAddress(macAddress);
			dispositivo.setNumero(numero);
			TipoDispositivo tipodispositivo = TipoDispositivoDA.get(1);
			dispositivo.setTipoDispositivo(tipodispositivo);
			dispositivo.setDescripcion(descripcion);
			controller.registrar(dispositivo);
			DispositivoPosicion dispositivoposicion= new DispositivoPosicion();
			DispositivoPosicionBL dispositivoPosicionBL = new DispositivoBL();
			controller.registrar();
		}
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}
